{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Basic Operations on Bayesian Networks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This notebook shows examples of some basic operations that can be performed on a Bayesian Network. We use the Protein Signalling network from the bnlearn repository as the example model: https://www.bnlearn.com/bnrepository/discrete-medium.html#sachs\n", "\n", "\n", "The `BayesianNetwork` class in pgmpy inherits the `networkx.DiGraph` class, hence all the methods defined for `networkx.DiGraph` should also work for `BayesianNetwork`." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pprint\n", "from IPython.display import Image\n", "import networkx as nx\n", "from pgmpy.factors.discrete import TabularCPD\n", "\n", "# Load the sachs model. \n", "# For other ways to define a model, please refer: https://pgmpy.org/examples/Creating%20a%20Discrete%20Bayesian%20Network.html\n", "from pgmpy.utils import get_example_model\n", "sachs_model = get_example_model('sachs')\n", "\n", "# Visualize the model\n", "viz = sachs_model.to_graphviz()\n", "viz.draw('sachs.png', prog='dot')\n", "Image('sachs.png')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Attributes of the Model Structure" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Nodes: ['Akt', 'Erk', 'Jnk', 'Mek', 'P38', 'PIP2', 'PIP3', 'PKA', 'PKC', 'Plcg', 'Raf'] \n", "\n", "Edges: [('Erk', 'Akt'), ('Mek', 'Erk'), ('PIP3', 'PIP2'), ('PKA', 'Akt'), ('PKA', 'Erk'), ('PKA', 'Jnk'), ('PKA', 'Mek'), ('PKA', 'P38'), ('PKA', 'Raf'), ('PKC', 'Jnk'), ('PKC', 'Mek'), ('PKC', 'P38'), ('PKC', 'PKA'), ('PKC', 'Raf'), ('Plcg', 'PIP2'), ('Plcg', 'PIP3'), ('Raf', 'Mek')] \n", "\n", "Parents of Akt: ['Erk', 'PKA'] \n", "\n", "Children of PKA: ['Akt', 'Erk', 'Jnk', 'Mek', 'P38', 'Raf'] \n", "\n", "Leaf nodes in the model: ['Akt', 'Jnk', 'P38', 'PIP2'] \n", "\n", "Root nodes in the model: ['PKC', 'Plcg'] \n", "\n" ] } ], "source": [ "# Get all the nodes/random variables in the model\n", "all_nodes = sachs_model.nodes()\n", "print(f\"Nodes: {all_nodes} \\n\")\n", "\n", "# Get all the edges in the model.\n", "all_edges = sachs_model.edges()\n", "print(f\"Edges: {all_edges} \\n\")\n", "\n", "# Get all the CPDs.\n", "all_cpds = sachs_model.get_cpds()\n", "\n", "# Get parents of a specific node\n", "akt_parents = sachs_model.get_parents('Akt')\n", "print(f\"Parents of Akt: {akt_parents} \\n\")\n", "\n", "# Get children of a specific node\n", "pka_children = sachs_model.get_children('PKA')\n", "print(f\"Children of PKA: {pka_children} \\n\")\n", "\n", "# Get all the leaf nodes of the model\n", "leaves = sachs_model.get_leaves()\n", "print(f\"Leaf nodes in the model: {leaves} \\n\")\n", "\n", "# Get the root nodes of the model\n", "roots = sachs_model.get_roots()\n", "print(f\"Root nodes in the model: {roots} \\n\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Modifying the Model Structure" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# Adding nodes to the model.\n", "sachs_model.add_node('new_node')\n", "sachs_model.add_nodes_from(['new_node1', 'new_node2'])\n", "\n", "# Adding edges to the model.\n", "sachs_model.add_edge('Akt', 'new_node')\n", "sachs_model.add_edges_from([('Akt', 'new_node1'), ('Akt', 'new_node2')])\n", "\n", "# Removing edges from the model.\n", "sachs_model.remove_edge('Akt', 'new_node')\n", "sachs_model.remove_edges_from([('Akt', 'new_node1'), ('Akt', 'new_node2')])\n", "\n", "# Removing nodes from the model\n", "sachs_model.remove_node('new_node')\n", "sachs_model.remove_nodes_from(['new_node1', 'new_node2'])" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# At any point, check_model can be called to check if the specified model is correct.\n", "sachs_model.check_model()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Modifying associated parameterization" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Getting an associated CPD\n", "sachs_model.get_cpds('Akt')\n", "\n", "# Adding new CPDs to the model\n", "sachs_model.add_node('new_node')\n", "new_cpd = TabularCPD('new_node', 2, [[0.2], [0.8]])\n", "sachs_model.add_cpds(new_cpd)\n", "\n", "# Removing the CPD and the node\n", "sachs_model.remove_cpds('new_node')\n", "sachs_model.remove_node('new_node')\n", "\n", "sachs_model.check_model()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## D-Separation" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n", "True\n", "False\n" ] } ], "source": [ "# Check if two variables in the network are conditionally / unconditionally d-connected.\n", "print(sachs_model.is_dconnected('PKC', 'Akt'))\n", "print(sachs_model.is_dconnected('PKC', 'Akt', observed=['Mek']))\n", "print(sachs_model.is_dconnected('PKC', 'Akt', observed=['Mek', 'PKA']))" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'PKA': {'Akt', 'Mek', 'PKC', 'Jnk', 'P38', 'Erk', 'PKA', 'Raf'}}\n", "{'PKA': {'Akt', 'Mek', 'PKC', 'Jnk', 'P38', 'Erk', 'PKA', 'Raf'}, 'Raf': {'Akt', 'Mek', 'Jnk', 'P38', 'Erk', 'PKA', 'PKC', 'Raf'}}\n", "\n", "{'PKA': {'Akt', 'Erk', 'Jnk', 'P38', 'Raf', 'PKA'}}\n", "{'PKA': {'Akt', 'Erk', 'Jnk', 'P38', 'Raf', 'PKA'}, 'Raf': {'Akt', 'Erk', 'Jnk', 'P38', 'Raf', 'PKA'}}\n" ] } ], "source": [ "# List all the variables that are d-connected to a given variable.\n", "print(sachs_model.active_trail_nodes('PKA'))\n", "print(sachs_model.active_trail_nodes(['PKA', 'Raf']))\n", "\n", "print()\n", "\n", "# List all d-connected variables when conditioned on some other variables\n", "print(sachs_model.active_trail_nodes('PKA', observed=['Mek', 'PKC']))\n", "print(sachs_model.active_trail_nodes(['PKA', 'Raf'], observed=['Mek', 'PKC']))" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'Erk', 'PKA'}\n" ] } ], "source": [ "# Find the minimal d-separator of any two variables\n", "print(sachs_model.minimal_dseparator('PKC', 'Akt'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Other Methods" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['PKA', 'Mek', 'PKC']" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Get the Markov blanket of a variable\n", "sachs_model.get_markov_blanket('Raf')" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(Raf ⟂ PIP3, Plcg, Jnk, P38, PIP2 | PKA, PKC)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# List all local indpeendencies of a node\n", "sachs_model.local_independencies('Raf')" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(Akt ⟂ PIP3, PIP2, Plcg),\n", " (Akt ⟂ PIP3, PIP2, Plcg | Mek),\n", " (Akt ⟂ PIP3, PIP2, Plcg | Jnk),\n", " (Akt ⟂ PIP3, PIP2, Plcg | P38),\n", " (Akt ⟂ PIP3, PIP2, Plcg | Erk),\n", " (Akt ⟂ Plcg, PIP3 | PIP2),\n", " (Akt ⟂ PIP3, PIP2, Plcg | PKA),\n", " (Akt ⟂ Plcg, PIP2 | PIP3),\n", " (Akt ⟂ PIP3, PIP2 | Plcg),\n", " (Akt ⟂ PIP3, PIP2, Plcg | PKC)]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# List all implied independencies in the network\n", "sachs_model.get_independencies().independencies[:10]" ] } ], "metadata": { "kernelspec": { "display_name": "pgmpy", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.8" } }, "nbformat": 4, "nbformat_minor": 4 }